<?php
namespace Home\Controller;
use Lib;
use Home\Model\FileModel;

class FileController extends Lib\Controller{
	function __construct(){
		//测试数据
		$this->userInfo['user_id'] = 11111;
		$this->userInfo['file_id'] = 2;
		$this->param['owner_id'] = 11111;
	}
	public function index(){
		echo __NAMESPACE__;
	}
	
	/**
	 * 通过post提交文件到当前接口
	 * 文件上传,无法对上传的用途进行确认，登陆的人都可以上传，但也许用户并不会使用
	 * 用户上传后，不使用ID，就会产生垃圾文件
	 * 一次只能上传一个文件，同时会标签名为　file 
	 * 
	 */
	public function uploadImg(){
		$f = new FileModel();

		$r = $f->write($_FILES['file'],$this->userInfo['user_id'].'_img',$this->userInfo,170);
		if(empty($r)){
			$this->error(ERROR_IO_FILE,$f->getError());
		}
		$this->show(array('id'=>$r));//返回获取到资源的ID
	}
	/**
	 * 获取文件，需要严格的权限验证
	 * {file_id:id,owner_id:id,min:1}
	 * @param file_id 文件ID号 
	 * @param owner_id 文件所有者ID号
	 * @param min     是否获取缩略图(0:原图,1:缩略图)
	 */
	public function getImg(){
		
		//权限验证
		$f = new FileModel();
		if($this->param['owner_id'] == $this->userInfo['user_id']){//文件所有者是当前用户
			//查询文件信息
			$d = $f->where(array('file_id'=>$this->userInfo['file_id'],'user_id'=>$this->userInfo['user_id']))->find();
			if(empty($d)){
				\Think\Log::record('对应的ID没有信息',NOTICE);
				$this->error(ERROR_NO_ARGV,'没有数据');
			}
			
			//获取文件
			header('Content-type: '.$d['type']);//修改HTTP头类型
			if($this->param['min'] == 1){
				echo file_get_contents(UPLOAD_FILE_ROOT.$d ['savepath'].$d['savename'].'.min');//输出文件内容
			}else{
				echo file_get_contents(UPLOAD_FILE_ROOT.$d ['savepath'].$d['savename']);//输出文件内容
			}
		}else{
			//检测是否为文件所有人好友
			$f = D('Friends');
			$rf = $f->where(array('user_id'=>$this->param['owner_id'],'friend_id'=>$this->userInfo['user_id']))->find();
			if(empty($rf)){
				//不是对方好友，不输出文件信息
				$this->error(ERROR_NO_ARGV,'没有权限');
			}
			//有权限
			$d = $f->where(array('file_id'=>$this->userInfo['file_id'],'user_id'=>$this->userInfo['user_id']))->find();
			if(empty($d)){
				\Think\Log::record('对应的ID没有信息',NOTICE);
				$this->error(ERROR_NO_ARGV,'没有数据');
			}
				
			//获取文件
			header('Content-type: '.$d['type']);//修改HTTP头类型
			if($this->param['min'] == 1){
				echo file_get_contents(UPLOAD_FILE_ROOT.$d ['savepath'].$d['savename'].'.min');//输出文件内容
			}else{
				echo file_get_contents(UPLOAD_FILE_ROOT.$d ['savepath'].$d['savename']);//输出文件内容
			}
		}
	}
}
?>